package bz.ziro.kanbe.controller.mng.page;

import java.util.Date;
import java.util.logging.Logger;
import org.slim3.controller.Controller;
import org.slim3.controller.Navigation;
import org.slim3.datastore.Datastore;

import com.google.appengine.api.datastore.Key;
import com.google.appengine.api.users.User;
import com.google.appengine.api.users.UserService;
import com.google.appengine.api.users.UserServiceFactory;

import bz.ziro.kanbe.dao.PageDao;
import bz.ziro.kanbe.model.Page;
import bz.ziro.kanbe.util.KeyFactory;

/**
 * ページ追加
 * @author Administrator
 *
 */
public class AddController extends Controller {

    @SuppressWarnings("unused")
    private static final Logger logger = Logger.getLogger(AddController.class.getName());

    @Override
    public Navigation run() {

        String siteKeyBuf = (String)sessionScope("siteKey");
        //親のキーを取得
        String parentKeyBuf = param("pageKey");

        //ページを生成
        Page page = new Page();
        //親ページを取得
        Page parentPage = PageDao.find(Long.valueOf(siteKeyBuf),Long.valueOf(parentKeyBuf));

        int count = PageDao.findParentCount(parentPage.getKey());
        //最上位で設定
        page.setPriority(count + 1);

        page.setName("[新規作成]");
        page.setDetail("");

        //親ページで設定
        page.setParentPageKey(parentPage.getKey());
        //サイトを設定
        page.setSiteKey(parentPage.getSiteKey());

        //サイト、ページテンプレートを設定
        page.setSiteTemplateKey(parentPage.getSiteTemplateKey());
        page.setPageTemplateKey(parentPage.getPageTemplateKey());

        //作成者情報を取得
        UserService userService = UserServiceFactory.getUserService();
        User user = userService.getCurrentUser();
        page.setCreateDate(new Date());
        page.setCreator(user);

        Key key = KeyFactory.allocatePageKey(Long.valueOf(siteKeyBuf));
        page.setKey(key);

        //ページを作成
        Datastore.put(page);
        
        requestScope("page",page);
        return forward("addPage.jsp");
    }
}
